/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：登录通-通用处理层
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taiping.dlt.converter;

import cn.hutool.core.date.LocalDateTimeUtil;
import com.taiping.dlt.dataobject.AuthLoginDO;
import com.taiping.dlt.pojo.bo.AuthLoginBO;
import com.taipingframework.json.JsonExtUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 注解lombok.experimental.Accessors的使用 与 org.springframework.cglib.beans.BeanCopier.create(Class, Class, boolean) 会产生冲突，导致赋值失败。
 */
public class AuthLoginDOConverter {

    /**
     * 业务对象 AuthLoginBO 转换为 数据对象 AuthLoginDO
     */
    public static AuthLoginDO convert(AuthLoginBO authLoginBO) {
        if (authLoginBO == null) {
            return null;
        }
        AuthLoginDO authLoginDO = new AuthLoginDO();

        JsonExtUtils.copyProperties(AuthLoginBO.class, AuthLoginDO.class, authLoginBO, authLoginDO);
        // LocalDateTime localDateTime = DateUtil.toLocalDateTime(authLoginBO.getLastLoginTime());
        authLoginDO.setLastLoginTime(LocalDateTimeUtil.of(authLoginBO.getLastLoginTime()));

        return authLoginDO;
    }

    /**
     * 业务对象列表 List<AuthLoginBO> 转换为 数据对象列表 List<AuthLoginDO>
     */
    public static List<AuthLoginDO> convert(List<AuthLoginBO> authLoginBOList) {
        if (authLoginBOList == null || authLoginBOList.size() <= 0) {
            return new ArrayList<>();
        }

        return authLoginBOList.parallelStream().map(AuthLoginDOConverter::convert).collect(Collectors.toList());
    }

}
